還記得XML裡的各種屬性嗎?
設定長寬
android:layout_width="fill_parent"
android:layout_height="wrap_content"
設定可見性
android:visibility="visible"
設定顏色
android:background="#FFB6C1"
許多的屬性都需要在XML上做設置
而來到的Compose,這份工作交給了修飾符 - Modifier
雖然有些組件有自己的參數或設定方式
不過大部分的屬性交給Modifier設定就可以了
那我們來看看範例吧
以下範例皆是參考自Android Developer官網
先來個最常見的padding
@Composable
private fun Greeting(name: String) {
Column(modifier = Modifier.padding(24.dp)) {
Text(text = "Hello,")
Text(text = name)
}
}
可以看到周圍加了一圈的邊距
也可以把Modifier的各個函數連在一起
@Composable
private fun Greeting(name: String) {
Column(modifier = Modifier
.padding(24.dp)
.fillMaxWidth()
) {
Text(text = "Hello,")
Text(text = name)
}
}
而且要注意一點,Modifier的順序非常重要
不同的順序會產生不同的效果
@Composable
fun ArtistCard(/*...*/) {
val padding = 16.dp
Column(
Modifier
.clickable(onClick = onClick)
.padding(padding)
.fillMaxWidth()
) {
// rest of the implementation
}
}
因為padding放在了clickable之後
所以整個Column都是可以點擊的
那如果我們調換順序
@Composable
fun ArtistCard(/*...*/) {
val padding = 16.dp
Column(
Modifier
.padding(padding)
.clickable(onClick = onClick)
.fillMaxWidth()
) {
// rest of the implementation
}
}
點擊區域就只會剩下padding內部區域
底下列出一些常見的屬性(未完待續
XML | Compose |
---|---|
android:layout_width="wrap_content" | Modifier.wrapContentWidth() |
android:layout_height="fill_parent" | Modifier.fillMaxHeight() |
android:onClick | Modifier.clickable { } |
android:background | Modifier.background() |
android:visibility="visible" | Modifier.alpha(1f) |
參考資料:
https://developer.android.com/jetpack/compose/modifiers